﻿/*!
 * Knockout JavaScript library v3.2.0
 * (c) Steven Sanderson - http://knockoutjs.com/
 * License: MIT (http://www.opensource.org/licenses/mit-license.php)
 */

(function () {
    (function (p) {
        var s = this || (0, eval)("this"), v = s.document, L = s.navigator, w = s.jQuery, D = s.JSON; (function (p) { "function" === typeof require && "object" === typeof exports && "object" === typeof module ? p(module.exports || exports, require) : "function" === typeof define && define.amd ? define(["exports", "require"], p) : p(s.ko = {}) })(function (M, N) {
            function H(a, d) { return null === a || typeof a in R ? a === d : !1 } function S(a, d) { var c; return function () { c || (c = setTimeout(function () { c = p; a() }, d)) } } function T(a, d) {
                var c; return function () {
                    clearTimeout(c);
                    c = setTimeout(a, d)
                }
            } function I(b, d, c, e) { a.d[b] = { init: function (b, h, k, f, m) { var l, q; a.s(function () { var f = a.a.c(h()), k = !c !== !f, z = !q; if (z || d || k !== l) z && a.Y.la() && (q = a.a.ia(a.f.childNodes(b), !0)), k ? (z || a.f.T(b, a.a.ia(q)), a.Ca(e ? e(m, f) : m, b)) : a.f.ja(b), l = k }, null, { o: b }); return { controlsDescendantBindings: !0 } } }; a.h.ha[b] = !1; a.f.Q[b] = !0 } var a = "undefined" !== typeof M ? M : {}; a.b = function (b, d) { for (var c = b.split("."), e = a, g = 0; g < c.length - 1; g++) e = e[c[g]]; e[c[c.length - 1]] = d }; a.A = function (a, d, c) { a[d] = c }; a.version = "3.2.0";
            a.b("version", a.version); a.a = function () {
                function b(a, b) { for (var c in a) a.hasOwnProperty(c) && b(c, a[c]) } function d(a, b) { if (b) for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c]); return a } function c(a, b) { a.__proto__ = b; return a } var e = { __proto__: [] } instanceof Array, g = {}, h = {}; g[L && /Firefox\/2/i.test(L.userAgent) ? "KeyboardEvent" : "UIEvents"] = ["keyup", "keydown", "keypress"]; g.MouseEvents = "click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "); b(g, function (a, b) {
                    if (b.length) for (var c =
                    0, d = b.length; c < d; c++) h[b[c]] = a
                }); var k = { propertychange: !0 }, f = v && function () { for (var a = 3, b = v.createElement("div"), c = b.getElementsByTagName("i") ; b.innerHTML = "\x3c!--[if gt IE " + ++a + "]><i></i><![endif]--\x3e", c[0];); return 4 < a ? a : p }(); return {
                    vb: ["authenticity_token", /^__RequestVerificationToken(_.*)?$/], u: function (a, b) { for (var c = 0, d = a.length; c < d; c++) b(a[c], c) }, m: function (a, b) {
                        if ("function" == typeof Array.prototype.indexOf) return Array.prototype.indexOf.call(a, b); for (var c = 0, d = a.length; c < d; c++) if (a[c] ===
                        b) return c; return -1
                    }, qb: function (a, b, c) { for (var d = 0, f = a.length; d < f; d++) if (b.call(c, a[d], d)) return a[d]; return null }, ua: function (m, b) { var c = a.a.m(m, b); 0 < c ? m.splice(c, 1) : 0 === c && m.shift() }, rb: function (m) { m = m || []; for (var b = [], c = 0, d = m.length; c < d; c++) 0 > a.a.m(b, m[c]) && b.push(m[c]); return b }, Da: function (a, b) { a = a || []; for (var c = [], d = 0, f = a.length; d < f; d++) c.push(b(a[d], d)); return c }, ta: function (a, b) { a = a || []; for (var c = [], d = 0, f = a.length; d < f; d++) b(a[d], d) && c.push(a[d]); return c }, ga: function (a, b) {
                        if (b instanceof
                        Array) a.push.apply(a, b); else for (var c = 0, d = b.length; c < d; c++) a.push(b[c]); return a
                    }, ea: function (b, c, d) { var f = a.a.m(a.a.Xa(b), c); 0 > f ? d && b.push(c) : d || b.splice(f, 1) }, xa: e, extend: d, za: c, Aa: e ? c : d, G: b, na: function (a, b) { if (!a) return a; var c = {}, d; for (d in a) a.hasOwnProperty(d) && (c[d] = b(a[d], d, a)); return c }, Ka: function (b) { for (; b.firstChild;) a.removeNode(b.firstChild) }, oc: function (b) { b = a.a.S(b); for (var c = v.createElement("div"), d = 0, f = b.length; d < f; d++) c.appendChild(a.R(b[d])); return c }, ia: function (b, c) {
                        for (var d =
                        0, f = b.length, e = []; d < f; d++) { var k = b[d].cloneNode(!0); e.push(c ? a.R(k) : k) } return e
                    }, T: function (b, c) { a.a.Ka(b); if (c) for (var d = 0, f = c.length; d < f; d++) b.appendChild(c[d]) }, Lb: function (b, c) { var d = b.nodeType ? [b] : b; if (0 < d.length) { for (var f = d[0], e = f.parentNode, k = 0, g = c.length; k < g; k++) e.insertBefore(c[k], f); k = 0; for (g = d.length; k < g; k++) a.removeNode(d[k]) } }, ka: function (a, b) {
                        if (a.length) {
                            for (b = 8 === b.nodeType && b.parentNode || b; a.length && a[0].parentNode !== b;) a.shift(); if (1 < a.length) {
                                var c = a[0], d = a[a.length - 1]; for (a.length =
                                0; c !== d;) if (a.push(c), c = c.nextSibling, !c) return; a.push(d)
                            }
                        } return a
                    }, Nb: function (a, b) { 7 > f ? a.setAttribute("selected", b) : a.selected = b }, cb: function (a) { return null === a || a === p ? "" : a.trim ? a.trim() : a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, "") }, vc: function (a, b) { a = a || ""; return b.length > a.length ? !1 : a.substring(0, b.length) === b }, cc: function (a, b) {
                        if (a === b) return !0; if (11 === a.nodeType) return !1; if (b.contains) return b.contains(3 === a.nodeType ? a.parentNode : a); if (b.compareDocumentPosition) return 16 == (b.compareDocumentPosition(a) &
                        16); for (; a && a != b;) a = a.parentNode; return !!a
                    }, Ja: function (b) { return a.a.cc(b, b.ownerDocument.documentElement) }, ob: function (b) { return !!a.a.qb(b, a.a.Ja) }, t: function (a) { return a && a.tagName && a.tagName.toLowerCase() }, n: function (b, c, d) {
                        var e = f && k[c]; if (!e && w) w(b).bind(c, d); else if (e || "function" != typeof b.addEventListener) if ("undefined" != typeof b.attachEvent) { var g = function (a) { d.call(b, a) }, h = "on" + c; b.attachEvent(h, g); a.a.w.da(b, function () { b.detachEvent(h, g) }) } else throw Error("Browser doesn't support addEventListener or attachEvent");
                        else b.addEventListener(c, d, !1)
                    }, oa: function (b, c) {
                        if (!b || !b.nodeType) throw Error("element must be a DOM node when calling triggerEvent"); var d; "input" === a.a.t(b) && b.type && "click" == c.toLowerCase() ? (d = b.type, d = "checkbox" == d || "radio" == d) : d = !1; if (w && !d) w(b).trigger(c); else if ("function" == typeof v.createEvent) if ("function" == typeof b.dispatchEvent) d = v.createEvent(h[c] || "HTMLEvents"), d.initEvent(c, !0, !0, s, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, b), b.dispatchEvent(d); else throw Error("The supplied element doesn't support dispatchEvent");
                        else if (d && b.click) b.click(); else if ("undefined" != typeof b.fireEvent) b.fireEvent("on" + c); else throw Error("Browser doesn't support triggering events");
                    }, c: function (b) { return a.C(b) ? b() : b }, Xa: function (b) { return a.C(b) ? b.v() : b }, Ba: function (b, c, d) { if (c) { var f = /\S+/g, e = b.className.match(f) || []; a.a.u(c.match(f), function (b) { a.a.ea(e, b, d) }); b.className = e.join(" ") } }, bb: function (b, c) {
                        var d = a.a.c(c); if (null === d || d === p) d = ""; var f = a.f.firstChild(b); !f || 3 != f.nodeType || a.f.nextSibling(f) ? a.f.T(b, [b.ownerDocument.createTextNode(d)]) :
                        f.data = d; a.a.fc(b)
                    }, Mb: function (a, b) { a.name = b; if (7 >= f) try { a.mergeAttributes(v.createElement("<input name='" + a.name + "'/>"), !1) } catch (c) { } }, fc: function (a) { 9 <= f && (a = 1 == a.nodeType ? a : a.parentNode, a.style && (a.style.zoom = a.style.zoom)) }, dc: function (a) { if (f) { var b = a.style.width; a.style.width = 0; a.style.width = b } }, sc: function (b, c) { b = a.a.c(b); c = a.a.c(c); for (var d = [], f = b; f <= c; f++) d.push(f); return d }, S: function (a) { for (var b = [], c = 0, d = a.length; c < d; c++) b.push(a[c]); return b }, yc: 6 === f, zc: 7 === f, L: f, xb: function (b, c) {
                        for (var d =
                        a.a.S(b.getElementsByTagName("input")).concat(a.a.S(b.getElementsByTagName("textarea"))), f = "string" == typeof c ? function (a) { return a.name === c } : function (a) { return c.test(a.name) }, e = [], k = d.length - 1; 0 <= k; k--) f(d[k]) && e.push(d[k]); return e
                    }, pc: function (b) { return "string" == typeof b && (b = a.a.cb(b)) ? D && D.parse ? D.parse(b) : (new Function("return " + b))() : null }, eb: function (b, c, d) {
                        if (!D || !D.stringify) throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
                        return D.stringify(a.a.c(b), c, d)
                    }, qc: function (c, d, f) {
                        f = f || {}; var e = f.params || {}, k = f.includeFields || this.vb, g = c; if ("object" == typeof c && "form" === a.a.t(c)) for (var g = c.action, h = k.length - 1; 0 <= h; h--) for (var r = a.a.xb(c, k[h]), E = r.length - 1; 0 <= E; E--) e[r[E].name] = r[E].value; d = a.a.c(d); var y = v.createElement("form"); y.style.display = "none"; y.action = g; y.method = "post"; for (var p in d) c = v.createElement("input"), c.type = "hidden", c.name = p, c.value = a.a.eb(a.a.c(d[p])), y.appendChild(c); b(e, function (a, b) {
                            var c = v.createElement("input");
                            c.type = "hidden"; c.name = a; c.value = b; y.appendChild(c)
                        }); v.body.appendChild(y); f.submitter ? f.submitter(y) : y.submit(); setTimeout(function () { y.parentNode.removeChild(y) }, 0)
                    }
                }
            }(); a.b("utils", a.a); a.b("utils.arrayForEach", a.a.u); a.b("utils.arrayFirst", a.a.qb); a.b("utils.arrayFilter", a.a.ta); a.b("utils.arrayGetDistinctValues", a.a.rb); a.b("utils.arrayIndexOf", a.a.m); a.b("utils.arrayMap", a.a.Da); a.b("utils.arrayPushAll", a.a.ga); a.b("utils.arrayRemoveItem", a.a.ua); a.b("utils.extend", a.a.extend); a.b("utils.fieldsIncludedWithJsonPost",
            a.a.vb); a.b("utils.getFormFields", a.a.xb); a.b("utils.peekObservable", a.a.Xa); a.b("utils.postJson", a.a.qc); a.b("utils.parseJson", a.a.pc); a.b("utils.registerEventHandler", a.a.n); a.b("utils.stringifyJson", a.a.eb); a.b("utils.range", a.a.sc); a.b("utils.toggleDomNodeCssClass", a.a.Ba); a.b("utils.triggerEvent", a.a.oa); a.b("utils.unwrapObservable", a.a.c); a.b("utils.objectForEach", a.a.G); a.b("utils.addOrRemoveItem", a.a.ea); a.b("unwrap", a.a.c); Function.prototype.bind || (Function.prototype.bind = function (a) {
                var d =
                this, c = Array.prototype.slice.call(arguments); a = c.shift(); return function () { return d.apply(a, c.concat(Array.prototype.slice.call(arguments))) }
            }); a.a.e = new function () {
                function a(b, h) { var k = b[c]; if (!k || "null" === k || !e[k]) { if (!h) return p; k = b[c] = "ko" + d++; e[k] = {} } return e[k] } var d = 0, c = "__ko__" + (new Date).getTime(), e = {}; return {
                    get: function (c, d) { var e = a(c, !1); return e === p ? p : e[d] }, set: function (c, d, e) { if (e !== p || a(c, !1) !== p) a(c, !0)[d] = e }, clear: function (a) { var b = a[c]; return b ? (delete e[b], a[c] = null, !0) : !1 }, F: function () {
                        return d++ +
                        c
                    }
                }
            }; a.b("utils.domData", a.a.e); a.b("utils.domData.clear", a.a.e.clear); a.a.w = new function () {
                function b(b, d) { var f = a.a.e.get(b, c); f === p && d && (f = [], a.a.e.set(b, c, f)); return f } function d(c) { var e = b(c, !1); if (e) for (var e = e.slice(0), f = 0; f < e.length; f++) e[f](c); a.a.e.clear(c); a.a.w.cleanExternalData(c); if (g[c.nodeType]) for (e = c.firstChild; c = e;) e = c.nextSibling, 8 === c.nodeType && d(c) } var c = a.a.e.F(), e = { 1: !0, 8: !0, 9: !0 }, g = { 1: !0, 9: !0 }; return {
                    da: function (a, c) {
                        if ("function" != typeof c) throw Error("Callback must be a function");
                        b(a, !0).push(c)
                    }, Kb: function (d, e) { var f = b(d, !1); f && (a.a.ua(f, e), 0 == f.length && a.a.e.set(d, c, p)) }, R: function (b) { if (e[b.nodeType] && (d(b), g[b.nodeType])) { var c = []; a.a.ga(c, b.getElementsByTagName("*")); for (var f = 0, m = c.length; f < m; f++) d(c[f]) } return b }, removeNode: function (b) { a.R(b); b.parentNode && b.parentNode.removeChild(b) }, cleanExternalData: function (a) { w && "function" == typeof w.cleanData && w.cleanData([a]) }
                }
            }; a.R = a.a.w.R; a.removeNode = a.a.w.removeNode; a.b("cleanNode", a.R); a.b("removeNode", a.removeNode); a.b("utils.domNodeDisposal",
            a.a.w); a.b("utils.domNodeDisposal.addDisposeCallback", a.a.w.da); a.b("utils.domNodeDisposal.removeDisposeCallback", a.a.w.Kb); (function () {
                a.a.ba = function (b) {
                    var d; if (w) if (w.parseHTML) d = w.parseHTML(b) || []; else { if ((d = w.clean([b])) && d[0]) { for (b = d[0]; b.parentNode && 11 !== b.parentNode.nodeType;) b = b.parentNode; b.parentNode && b.parentNode.removeChild(b) } } else {
                        var c = a.a.cb(b).toLowerCase(); d = v.createElement("div"); c = c.match(/^<(thead|tbody|tfoot)/) && [1, "<table>", "</table>"] || !c.indexOf("<tr") && [2, "<table><tbody>",
                        "</tbody></table>"] || (!c.indexOf("<td") || !c.indexOf("<th")) && [3, "<table><tbody><tr>", "</tr></tbody></table>"] || [0, "", ""]; b = "ignored<div>" + c[1] + b + c[2] + "</div>"; for ("function" == typeof s.innerShiv ? d.appendChild(s.innerShiv(b)) : d.innerHTML = b; c[0]--;) d = d.lastChild; d = a.a.S(d.lastChild.childNodes)
                    } return d
                }; a.a.$a = function (b, d) { a.a.Ka(b); d = a.a.c(d); if (null !== d && d !== p) if ("string" != typeof d && (d = d.toString()), w) w(b).html(d); else for (var c = a.a.ba(d), e = 0; e < c.length; e++) b.appendChild(c[e]) }
            })(); a.b("utils.parseHtmlFragment",
            a.a.ba); a.b("utils.setHtml", a.a.$a); a.D = function () {
                function b(c, d) { if (c) if (8 == c.nodeType) { var g = a.D.Gb(c.nodeValue); null != g && d.push({ bc: c, mc: g }) } else if (1 == c.nodeType) for (var g = 0, h = c.childNodes, k = h.length; g < k; g++) b(h[g], d) } var d = {}; return {
                    Ua: function (a) {
                        if ("function" != typeof a) throw Error("You can only pass a function to ko.memoization.memoize()"); var b = (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1) + (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1); d[b] = a; return "\x3c!--[ko_memo:" +
                        b + "]--\x3e"
                    }, Rb: function (a, b) { var g = d[a]; if (g === p) throw Error("Couldn't find any memo with ID " + a + ". Perhaps it's already been unmemoized."); try { return g.apply(null, b || []), !0 } finally { delete d[a] } }, Sb: function (c, d) { var g = []; b(c, g); for (var h = 0, k = g.length; h < k; h++) { var f = g[h].bc, m = [f]; d && a.a.ga(m, d); a.D.Rb(g[h].mc, m); f.nodeValue = ""; f.parentNode && f.parentNode.removeChild(f) } }, Gb: function (a) { return (a = a.match(/^\[ko_memo\:(.*?)\]$/)) ? a[1] : null }
                }
            }(); a.b("memoization", a.D); a.b("memoization.memoize", a.D.Ua);
            a.b("memoization.unmemoize", a.D.Rb); a.b("memoization.parseMemoText", a.D.Gb); a.b("memoization.unmemoizeDomNodeAndDescendants", a.D.Sb); a.La = { throttle: function (b, d) { b.throttleEvaluation = d; var c = null; return a.j({ read: b, write: function (a) { clearTimeout(c); c = setTimeout(function () { b(a) }, d) } }) }, rateLimit: function (a, d) { var c, e, g; "number" == typeof d ? c = d : (c = d.timeout, e = d.method); g = "notifyWhenChangesStop" == e ? T : S; a.Ta(function (a) { return g(a, c) }) }, notify: function (a, d) { a.equalityComparer = "always" == d ? null : H } }; var R =
            { undefined: 1, "boolean": 1, number: 1, string: 1 }; a.b("extenders", a.La); a.Pb = function (b, d, c) { this.target = b; this.wa = d; this.ac = c; this.Cb = !1; a.A(this, "dispose", this.K) }; a.Pb.prototype.K = function () { this.Cb = !0; this.ac() }; a.P = function () { a.a.Aa(this, a.P.fn); this.M = {} }; var G = "change", A = {
                U: function (b, d, c) { var e = this; c = c || G; var g = new a.Pb(e, d ? b.bind(d) : b, function () { a.a.ua(e.M[c], g); e.nb && e.nb() }); e.va && e.va(c); e.M[c] || (e.M[c] = []); e.M[c].push(g); return g }, notifySubscribers: function (b, d) {
                    d = d || G; if (this.Ab(d)) try {
                        a.k.Ea();
                        for (var c = this.M[d].slice(0), e = 0, g; g = c[e]; ++e) g.Cb || g.wa(b)
                    } finally { a.k.end() }
                }, Ta: function (b) { var d = this, c = a.C(d), e, g, h; d.qa || (d.qa = d.notifySubscribers, d.notifySubscribers = function (a, b) { b && b !== G ? "beforeChange" === b ? d.kb(a) : d.qa(a, b) : d.lb(a) }); var k = b(function () { c && h === d && (h = d()); e = !1; d.Pa(g, h) && d.qa(g = h) }); d.lb = function (a) { e = !0; h = a; k() }; d.kb = function (a) { e || (g = a, d.qa(a, "beforeChange")) } }, Ab: function (a) { return this.M[a] && this.M[a].length }, yb: function () {
                    var b = 0; a.a.G(this.M, function (a, c) { b += c.length });
                    return b
                }, Pa: function (a, d) { return !this.equalityComparer || !this.equalityComparer(a, d) }, extend: function (b) { var d = this; b && a.a.G(b, function (b, e) { var g = a.La[b]; "function" == typeof g && (d = g(d, e) || d) }); return d }
            }; a.A(A, "subscribe", A.U); a.A(A, "extend", A.extend); a.A(A, "getSubscriptionsCount", A.yb); a.a.xa && a.a.za(A, Function.prototype); a.P.fn = A; a.Db = function (a) { return null != a && "function" == typeof a.U && "function" == typeof a.notifySubscribers }; a.b("subscribable", a.P); a.b("isSubscribable", a.Db); a.Y = a.k = function () {
                function b(a) {
                    c.push(e);
                    e = a
                } function d() { e = c.pop() } var c = [], e, g = 0; return { Ea: b, end: d, Jb: function (b) { if (e) { if (!a.Db(b)) throw Error("Only subscribable things can act as dependencies"); e.wa(b, b.Vb || (b.Vb = ++g)) } }, B: function (a, c, f) { try { return b(), a.apply(c, f || []) } finally { d() } }, la: function () { if (e) return e.s.la() }, ma: function () { if (e) return e.ma } }
            }(); a.b("computedContext", a.Y); a.b("computedContext.getDependenciesCount", a.Y.la); a.b("computedContext.isInitial", a.Y.ma); a.b("computedContext.isSleeping", a.Y.Ac); a.p = function (b) {
                function d() {
                    if (0 <
                    arguments.length) return d.Pa(c, arguments[0]) && (d.X(), c = arguments[0], d.W()), this; a.k.Jb(d); return c
                } var c = b; a.P.call(d); a.a.Aa(d, a.p.fn); d.v = function () { return c }; d.W = function () { d.notifySubscribers(c) }; d.X = function () { d.notifySubscribers(c, "beforeChange") }; a.A(d, "peek", d.v); a.A(d, "valueHasMutated", d.W); a.A(d, "valueWillMutate", d.X); return d
            }; a.p.fn = { equalityComparer: H }; var F = a.p.rc = "__ko_proto__"; a.p.fn[F] = a.p; a.a.xa && a.a.za(a.p.fn, a.P.fn); a.Ma = function (b, d) {
                return null === b || b === p || b[F] === p ? !1 : b[F] ===
                d ? !0 : a.Ma(b[F], d)
            }; a.C = function (b) { return a.Ma(b, a.p) }; a.Ra = function (b) { return "function" == typeof b && b[F] === a.p || "function" == typeof b && b[F] === a.j && b.hc ? !0 : !1 }; a.b("observable", a.p); a.b("isObservable", a.C); a.b("isWriteableObservable", a.Ra); a.b("isWritableObservable", a.Ra); a.aa = function (b) { b = b || []; if ("object" != typeof b || !("length" in b)) throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined."); b = a.p(b); a.a.Aa(b, a.aa.fn); return b.extend({ trackArrayChanges: !0 }) };
            a.aa.fn = {
                remove: function (b) { for (var d = this.v(), c = [], e = "function" != typeof b || a.C(b) ? function (a) { return a === b } : b, g = 0; g < d.length; g++) { var h = d[g]; e(h) && (0 === c.length && this.X(), c.push(h), d.splice(g, 1), g--) } c.length && this.W(); return c }, removeAll: function (b) { if (b === p) { var d = this.v(), c = d.slice(0); this.X(); d.splice(0, d.length); this.W(); return c } return b ? this.remove(function (c) { return 0 <= a.a.m(b, c) }) : [] }, destroy: function (b) {
                    var d = this.v(), c = "function" != typeof b || a.C(b) ? function (a) { return a === b } : b; this.X();
                    for (var e = d.length - 1; 0 <= e; e--) c(d[e]) && (d[e]._destroy = !0); this.W()
                }, destroyAll: function (b) { return b === p ? this.destroy(function () { return !0 }) : b ? this.destroy(function (d) { return 0 <= a.a.m(b, d) }) : [] }, indexOf: function (b) { var d = this(); return a.a.m(d, b) }, replace: function (a, d) { var c = this.indexOf(a); 0 <= c && (this.X(), this.v()[c] = d, this.W()) }
            }; a.a.u("pop push reverse shift sort splice unshift".split(" "), function (b) {
                a.aa.fn[b] = function () {
                    var a = this.v(); this.X(); this.sb(a, b, arguments); a = a[b].apply(a, arguments); this.W();
                    return a
                }
            }); a.a.u(["slice"], function (b) { a.aa.fn[b] = function () { var a = this(); return a[b].apply(a, arguments) } }); a.a.xa && a.a.za(a.aa.fn, a.p.fn); a.b("observableArray", a.aa); var J = "arrayChange"; a.La.trackArrayChanges = function (b) {
                function d() {
                    if (!c) {
                        c = !0; var d = b.notifySubscribers; b.notifySubscribers = function (a, b) { b && b !== G || ++g; return d.apply(this, arguments) }; var f = [].concat(b.v() || []); e = null; b.U(function (c) {
                            c = [].concat(c || []); if (b.Ab(J)) {
                                var d; if (!e || 1 < g) e = a.a.Fa(f, c, { sparse: !0 }); d = e; d.length && b.notifySubscribers(d,
                                J)
                            } f = c; e = null; g = 0
                        })
                    }
                } if (!b.sb) {
                    var c = !1, e = null, g = 0, h = b.U; b.U = b.subscribe = function (a, b, c) { c === J && d(); return h.apply(this, arguments) }; b.sb = function (b, d, m) {
                        function l(a, b, c) { return q[q.length] = { status: a, value: b, index: c } } if (c && !g) {
                            var q = [], h = b.length, t = m.length, z = 0; switch (d) {
                                case "push": z = h; case "unshift": for (d = 0; d < t; d++) l("added", m[d], z + d); break; case "pop": z = h - 1; case "shift": h && l("deleted", b[z], z); break; case "splice": d = Math.min(Math.max(0, 0 > m[0] ? h + m[0] : m[0]), h); for (var h = 1 === t ? h : Math.min(d + (m[1] || 0),
                                h), t = d + t - 2, z = Math.max(h, t), u = [], r = [], E = 2; d < z; ++d, ++E) d < h && r.push(l("deleted", b[d], d)), d < t && u.push(l("added", m[E], d)); a.a.wb(r, u); break; default: return
                            } e = q
                        }
                    }
                }
            }; a.s = a.j = function (b, d, c) {
                function e() { a.a.G(v, function (a, b) { b.K() }); v = {} } function g() { e(); C = 0; u = !0; n = !1 } function h() { var a = f.throttleEvaluation; a && 0 <= a ? (clearTimeout(P), P = setTimeout(k, a)) : f.ib ? f.ib() : k() } function k(b) {
                    if (t) { if (E) throw Error("A 'pure' computed must not be called recursively"); } else if (!u) {
                        if (w && w()) { if (!z) { s(); return } } else z = !1;
                        t = !0; if (y) try { var c = {}; a.k.Ea({ wa: function (a, b) { c[b] || (c[b] = 1, ++C) }, s: f, ma: p }); C = 0; q = r.call(d) } finally { a.k.end(), t = !1 } else try { var e = v, m = C; a.k.Ea({ wa: function (a, b) { u || (m && e[b] ? (v[b] = e[b], ++C, delete e[b], --m) : v[b] || (v[b] = a.U(h), ++C)) }, s: f, ma: E ? p : !C }); v = {}; C = 0; try { var l = d ? r.call(d) : r() } finally { a.k.end(), m && a.a.G(e, function (a, b) { b.K() }), n = !1 } f.Pa(q, l) && (f.notifySubscribers(q, "beforeChange"), q = l, !0 !== b && f.notifySubscribers(q)) } finally { t = !1 } C || s()
                    }
                } function f() {
                    if (0 < arguments.length) {
                        if ("function" === typeof O) O.apply(d,
                        arguments); else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters."); return this
                    } a.k.Jb(f); n && k(!0); return q
                } function m() { n && !C && k(!0); return q } function l() { return n || 0 < C } var q, n = !0, t = !1, z = !1, u = !1, r = b, E = !1, y = !1; r && "object" == typeof r ? (c = r, r = c.read) : (c = c || {}, r || (r = c.read)); if ("function" != typeof r) throw Error("Pass a function that returns the value of the ko.computed"); var O = c.write, x = c.disposeWhenNodeIsRemoved ||
                c.o || null, B = c.disposeWhen || c.Ia, w = B, s = g, v = {}, C = 0, P = null; d || (d = c.owner); a.P.call(f); a.a.Aa(f, a.j.fn); f.v = m; f.la = function () { return C }; f.hc = "function" === typeof c.write; f.K = function () { s() }; f.Z = l; var A = f.Ta; f.Ta = function (a) { A.call(f, a); f.ib = function () { f.kb(q); n = !0; f.lb(f) } }; c.pure ? (y = E = !0, f.va = function () { y && (y = !1, k(!0)) }, f.nb = function () { f.yb() || (e(), y = n = !0) }) : c.deferEvaluation && (f.va = function () { m(); delete f.va }); a.A(f, "peek", f.v); a.A(f, "dispose", f.K); a.A(f, "isActive", f.Z); a.A(f, "getDependenciesCount",
                f.la); x && (z = !0, x.nodeType && (w = function () { return !a.a.Ja(x) || B && B() })); y || c.deferEvaluation || k(); x && l() && x.nodeType && (s = function () { a.a.w.Kb(x, s); g() }, a.a.w.da(x, s)); return f
            }; a.jc = function (b) { return a.Ma(b, a.j) }; A = a.p.rc; a.j[A] = a.p; a.j.fn = { equalityComparer: H }; a.j.fn[A] = a.j; a.a.xa && a.a.za(a.j.fn, a.P.fn); a.b("dependentObservable", a.j); a.b("computed", a.j); a.b("isComputed", a.jc); a.Ib = function (b, d) { if ("function" === typeof b) return a.s(b, d, { pure: !0 }); b = a.a.extend({}, b); b.pure = !0; return a.s(b, d) }; a.b("pureComputed",
            a.Ib); (function () {
                function b(a, g, h) { h = h || new c; a = g(a); if ("object" != typeof a || null === a || a === p || a instanceof Date || a instanceof String || a instanceof Number || a instanceof Boolean) return a; var k = a instanceof Array ? [] : {}; h.save(a, k); d(a, function (c) { var d = g(a[c]); switch (typeof d) { case "boolean": case "number": case "string": case "function": k[c] = d; break; case "object": case "undefined": var l = h.get(d); k[c] = l !== p ? l : b(d, g, h) } }); return k } function d(a, b) {
                    if (a instanceof Array) {
                        for (var c = 0; c < a.length; c++) b(c); "function" ==
                        typeof a.toJSON && b("toJSON")
                    } else for (c in a) b(c)
                } function c() { this.keys = []; this.hb = [] } a.Qb = function (c) { if (0 == arguments.length) throw Error("When calling ko.toJS, pass the object you want to convert."); return b(c, function (b) { for (var c = 0; a.C(b) && 10 > c; c++) b = b(); return b }) }; a.toJSON = function (b, c, d) { b = a.Qb(b); return a.a.eb(b, c, d) }; c.prototype = { save: function (b, c) { var d = a.a.m(this.keys, b); 0 <= d ? this.hb[d] = c : (this.keys.push(b), this.hb.push(c)) }, get: function (b) { b = a.a.m(this.keys, b); return 0 <= b ? this.hb[b] : p } }
            })();
            a.b("toJS", a.Qb); a.b("toJSON", a.toJSON); (function () {
                a.i = {
                    q: function (b) { switch (a.a.t(b)) { case "option": return !0 === b.__ko__hasDomDataOptionValue__ ? a.a.e.get(b, a.d.options.Va) : 7 >= a.a.L ? b.getAttributeNode("value") && b.getAttributeNode("value").specified ? b.value : b.text : b.value; case "select": return 0 <= b.selectedIndex ? a.i.q(b.options[b.selectedIndex]) : p; default: return b.value } }, ca: function (b, d, c) {
                        switch (a.a.t(b)) {
                            case "option": switch (typeof d) {
                                case "string": a.a.e.set(b, a.d.options.Va, p); "__ko__hasDomDataOptionValue__" in
                                b && delete b.__ko__hasDomDataOptionValue__; b.value = d; break; default: a.a.e.set(b, a.d.options.Va, d), b.__ko__hasDomDataOptionValue__ = !0, b.value = "number" === typeof d ? d : ""
                            } break; case "select": if ("" === d || null === d) d = p; for (var e = -1, g = 0, h = b.options.length, k; g < h; ++g) if (k = a.i.q(b.options[g]), k == d || "" == k && d === p) { e = g; break } if (c || 0 <= e || d === p && 1 < b.size) b.selectedIndex = e; break; default: if (null === d || d === p) d = ""; b.value = d
                        }
                    }
                }
            })(); a.b("selectExtensions", a.i); a.b("selectExtensions.readValue", a.i.q); a.b("selectExtensions.writeValue",
            a.i.ca); a.h = function () {
                function b(b) {
                    b = a.a.cb(b); 123 === b.charCodeAt(0) && (b = b.slice(1, -1)); var c = [], d = b.match(e), k, n, t = 0; if (d) {
                        d.push(","); for (var z = 0, u; u = d[z]; ++z) {
                            var r = u.charCodeAt(0); if (44 === r) { if (0 >= t) { k && c.push(n ? { key: k, value: n.join("") } : { unknown: k }); k = n = t = 0; continue } } else if (58 === r) { if (!n) continue } else if (47 === r && z && 1 < u.length) (r = d[z - 1].match(g)) && !h[r[0]] && (b = b.substr(b.indexOf(u) + 1), d = b.match(e), d.push(","), z = -1, u = "/"); else if (40 === r || 123 === r || 91 === r)++t; else if (41 === r || 125 === r || 93 === r)--t;
                            else if (!k && !n) { k = 34 === r || 39 === r ? u.slice(1, -1) : u; continue } n ? n.push(u) : n = [u]
                        }
                    } return c
                } var d = ["true", "false", "null", "undefined"], c = /^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i, e = RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,\"'{}()/:[\\]]*[^\\s,\"'{}()/:[\\]]|[^\\s]", "g"), g = /[\])"'A-Za-z0-9_$]+$/, h = { "in": 1, "return": 1, "typeof": 1 }, k = {}; return {
                    ha: [], V: k, Wa: b, ya: function (f, m) {
                        function e(b, m) {
                            var f; if (!z) {
                                var u = a.getBindingHandler(b); if (u && u.preprocess &&
                                !(m = u.preprocess(m, b, e))) return; if (u = k[b]) f = m, 0 <= a.a.m(d, f) ? f = !1 : (u = f.match(c), f = null === u ? !1 : u[1] ? "Object(" + u[1] + ")" + u[2] : f), u = f; u && h.push("'" + b + "':function(_z){" + f + "=_z}")
                            } t && (m = "function(){return " + m + " }"); g.push("'" + b + "':" + m)
                        } m = m || {}; var g = [], h = [], t = m.valueAccessors, z = m.bindingParams, u = "string" === typeof f ? b(f) : f; a.a.u(u, function (a) { e(a.key || a.unknown, a.value) }); h.length && e("_ko_property_writers", "{" + h.join(",") + " }"); return g.join(",")
                    }, lc: function (a, b) {
                        for (var c = 0; c < a.length; c++) if (a[c].key ==
                        b) return !0; return !1
                    }, pa: function (b, c, d, e, k) { if (b && a.C(b)) !a.Ra(b) || k && b.v() === e || b(e); else if ((b = c.get("_ko_property_writers")) && b[d]) b[d](e) }
                }
            }(); a.b("expressionRewriting", a.h); a.b("expressionRewriting.bindingRewriteValidators", a.h.ha); a.b("expressionRewriting.parseObjectLiteral", a.h.Wa); a.b("expressionRewriting.preProcessBindings", a.h.ya); a.b("expressionRewriting._twoWayBindings", a.h.V); a.b("jsonExpressionRewriting", a.h); a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson", a.h.ya); (function () {
                function b(a) {
                    return 8 ==
                    a.nodeType && h.test(g ? a.text : a.nodeValue)
                } function d(a) { return 8 == a.nodeType && k.test(g ? a.text : a.nodeValue) } function c(a, c) { for (var f = a, e = 1, k = []; f = f.nextSibling;) { if (d(f) && (e--, 0 === e)) return k; k.push(f); b(f) && e++ } if (!c) throw Error("Cannot find closing comment tag to match: " + a.nodeValue); return null } function e(a, b) { var d = c(a, b); return d ? 0 < d.length ? d[d.length - 1].nextSibling : a.nextSibling : null } var g = v && "\x3c!--test--\x3e" === v.createComment("test").text, h = g ? /^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/ : /^\s*ko(?:\s+([\s\S]+))?\s*$/,
                k = g ? /^\x3c!--\s*\/ko\s*--\x3e$/ : /^\s*\/ko\s*$/, f = { ul: !0, ol: !0 }; a.f = {
                    Q: {}, childNodes: function (a) { return b(a) ? c(a) : a.childNodes }, ja: function (c) { if (b(c)) { c = a.f.childNodes(c); for (var d = 0, f = c.length; d < f; d++) a.removeNode(c[d]) } else a.a.Ka(c) }, T: function (c, d) { if (b(c)) { a.f.ja(c); for (var f = c.nextSibling, e = 0, k = d.length; e < k; e++) f.parentNode.insertBefore(d[e], f) } else a.a.T(c, d) }, Hb: function (a, c) { b(a) ? a.parentNode.insertBefore(c, a.nextSibling) : a.firstChild ? a.insertBefore(c, a.firstChild) : a.appendChild(c) }, Bb: function (c,
                    d, f) { f ? b(c) ? c.parentNode.insertBefore(d, f.nextSibling) : f.nextSibling ? c.insertBefore(d, f.nextSibling) : c.appendChild(d) : a.f.Hb(c, d) }, firstChild: function (a) { return b(a) ? !a.nextSibling || d(a.nextSibling) ? null : a.nextSibling : a.firstChild }, nextSibling: function (a) { b(a) && (a = e(a)); return a.nextSibling && d(a.nextSibling) ? null : a.nextSibling }, gc: b, xc: function (a) { return (a = (g ? a.text : a.nodeValue).match(h)) ? a[1] : null }, Fb: function (c) {
                        if (f[a.a.t(c)]) {
                            var k = c.firstChild; if (k) {
                                do if (1 === k.nodeType) {
                                    var g; g = k.firstChild;
                                    var h = null; if (g) { do if (h) h.push(g); else if (b(g)) { var t = e(g, !0); t ? g = t : h = [g] } else d(g) && (h = [g]); while (g = g.nextSibling) } if (g = h) for (h = k.nextSibling, t = 0; t < g.length; t++) h ? c.insertBefore(g[t], h) : c.appendChild(g[t])
                                } while (k = k.nextSibling)
                            }
                        }
                    }
                }
            })(); a.b("virtualElements", a.f); a.b("virtualElements.allowedBindings", a.f.Q); a.b("virtualElements.emptyNode", a.f.ja); a.b("virtualElements.insertAfter", a.f.Bb); a.b("virtualElements.prepend", a.f.Hb); a.b("virtualElements.setDomNodeChildren", a.f.T); (function () {
                a.J = function () {
                    this.Yb =
                    {}
                }; a.a.extend(a.J.prototype, {
                    nodeHasBindings: function (b) { switch (b.nodeType) { case 1: return null != b.getAttribute("data-bind") || a.g.getComponentNameForNode(b); case 8: return a.f.gc(b); default: return !1 } }, getBindings: function (b, d) { var c = this.getBindingsString(b, d), c = c ? this.parseBindingsString(c, d, b) : null; return a.g.mb(c, b, d, !1) }, getBindingAccessors: function (b, d) { var c = this.getBindingsString(b, d), c = c ? this.parseBindingsString(c, d, b, { valueAccessors: !0 }) : null; return a.g.mb(c, b, d, !0) }, getBindingsString: function (b) {
                        switch (b.nodeType) {
                            case 1: return b.getAttribute("data-bind");
                            case 8: return a.f.xc(b); default: return null
                        }
                    }, parseBindingsString: function (b, d, c, e) { try { var g = this.Yb, h = b + (e && e.valueAccessors || ""), k; if (!(k = g[h])) { var f, m = "with($context){with($data||{}){return{" + a.h.ya(b, e) + "}}}"; f = new Function("$context", "$element", m); k = g[h] = f } return k(d, c) } catch (l) { throw l.message = "Unable to parse bindings.\nBindings value: " + b + "\nMessage: " + l.message, l; } }
                }); a.J.instance = new a.J
            })(); a.b("bindingProvider", a.J); (function () {
                function b(a) { return function () { return a } } function d(a) { return a() }
                function c(b) { return a.a.na(a.k.B(b), function (a, c) { return function () { return b()[c] } }) } function e(a, b) { return c(this.getBindings.bind(this, a, b)) } function g(b, c, d) { var f, e = a.f.firstChild(c), k = a.J.instance, g = k.preprocessNode; if (g) { for (; f = e;) e = a.f.nextSibling(f), g.call(k, f); e = a.f.firstChild(c) } for (; f = e;) e = a.f.nextSibling(f), h(b, f, d) } function h(b, c, d) { var e = !0, k = 1 === c.nodeType; k && a.f.Fb(c); if (k && d || a.J.instance.nodeHasBindings(c)) e = f(c, null, b, d).shouldBindDescendants; e && !l[a.a.t(c)] && g(b, c, !k) } function k(b) {
                    var c =
                    [], d = {}, f = []; a.a.G(b, function y(e) { if (!d[e]) { var k = a.getBindingHandler(e); k && (k.after && (f.push(e), a.a.u(k.after, function (c) { if (b[c]) { if (-1 !== a.a.m(f, c)) throw Error("Cannot combine the following bindings, because they have a cyclic dependency: " + f.join(", ")); y(c) } }), f.length--), c.push({ key: e, zb: k })); d[e] = !0 } }); return c
                } function f(b, c, f, g) {
                    var m = a.a.e.get(b, q); if (!c) { if (m) throw Error("You cannot apply bindings multiple times to the same element."); a.a.e.set(b, q, !0) } !m && g && a.Ob(b, f); var l; if (c && "function" !==
                    typeof c) l = c; else { var h = a.J.instance, n = h.getBindingAccessors || e, s = a.j(function () { (l = c ? c(f, b) : n.call(h, b, f)) && f.I && f.I(); return l }, null, { o: b }); l && s.Z() || (s = null) } var v; if (l) {
                        var w = s ? function (a) { return function () { return d(s()[a]) } } : function (a) { return l[a] }, A = function () { return a.a.na(s ? s() : l, d) }; A.get = function (a) { return l[a] && d(w(a)) }; A.has = function (a) { return a in l }; g = k(l); a.a.u(g, function (c) {
                            var d = c.zb.init, e = c.zb.update, k = c.key; if (8 === b.nodeType && !a.f.Q[k]) throw Error("The binding '" + k + "' cannot be used with virtual elements");
                            try { "function" == typeof d && a.k.B(function () { var a = d(b, w(k), A, f.$data, f); if (a && a.controlsDescendantBindings) { if (v !== p) throw Error("Multiple bindings (" + v + " and " + k + ") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element."); v = k } }), "function" == typeof e && a.j(function () { e(b, w(k), A, f.$data, f) }, null, { o: b }) } catch (g) { throw g.message = 'Unable to process binding "' + k + ": " + l[k] + '"\nMessage: ' + g.message, g; }
                        })
                    } return { shouldBindDescendants: v === p }
                }
                function m(b) { return b && b instanceof a.N ? b : new a.N(b) } a.d = {}; var l = { script: !0 }; a.getBindingHandler = function (b) { return a.d[b] }; a.N = function (b, c, d, f) {
                    var e = this, k = "function" == typeof b && !a.C(b), g, m = a.j(function () { var g = k ? b() : b, l = a.a.c(g); c ? (c.I && c.I(), a.a.extend(e, c), m && (e.I = m)) : (e.$parents = [], e.$root = l, e.ko = a); e.$rawData = g; e.$data = l; d && (e[d] = l); f && f(e, c, l); return e.$data }, null, { Ia: function () { return g && !a.a.ob(g) }, o: !0 }); m.Z() && (e.I = m, m.equalityComparer = null, g = [], m.Tb = function (b) {
                        g.push(b); a.a.w.da(b,
                        function (b) { a.a.ua(g, b); g.length || (m.K(), e.I = m = p) })
                    })
                }; a.N.prototype.createChildContext = function (b, c, d) { return new a.N(b, this, c, function (a, b) { a.$parentContext = b; a.$parent = b.$data; a.$parents = (b.$parents || []).slice(0); a.$parents.unshift(a.$parent); d && d(a) }) }; a.N.prototype.extend = function (b) { return new a.N(this.I || this.$data, this, null, function (c, d) { c.$rawData = d.$rawData; a.a.extend(c, "function" == typeof b ? b() : b) }) }; var q = a.a.e.F(), n = a.a.e.F(); a.Ob = function (b, c) {
                    if (2 == arguments.length) a.a.e.set(b, n, c),
                    c.I && c.I.Tb(b); else return a.a.e.get(b, n)
                }; a.ra = function (b, c, d) { 1 === b.nodeType && a.f.Fb(b); return f(b, c, m(d), !0) }; a.Wb = function (d, f, e) { e = m(e); return a.ra(d, "function" === typeof f ? c(f.bind(null, e, d)) : a.a.na(f, b), e) }; a.Ca = function (a, b) { 1 !== b.nodeType && 8 !== b.nodeType || g(m(a), b, !0) }; a.pb = function (a, b) {
                    !w && s.jQuery && (w = s.jQuery); if (b && 1 !== b.nodeType && 8 !== b.nodeType) throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node"); b = b || s.document.body; h(m(a),
                    b, !0)
                }; a.Ha = function (b) { switch (b.nodeType) { case 1: case 8: var c = a.Ob(b); if (c) return c; if (b.parentNode) return a.Ha(b.parentNode) } return p }; a.$b = function (b) { return (b = a.Ha(b)) ? b.$data : p }; a.b("bindingHandlers", a.d); a.b("applyBindings", a.pb); a.b("applyBindingsToDescendants", a.Ca); a.b("applyBindingAccessorsToNode", a.ra); a.b("applyBindingsToNode", a.Wb); a.b("contextFor", a.Ha); a.b("dataFor", a.$b)
            })(); (function (b) {
                function d(d, f) {
                    var e = g.hasOwnProperty(d) ? g[d] : b, l; e || (e = g[d] = new a.P, c(d, function (a) {
                        h[d] = a; delete g[d];
                        l ? e.notifySubscribers(a) : setTimeout(function () { e.notifySubscribers(a) }, 0)
                    }), l = !0); e.U(f)
                } function c(a, b) { e("getConfig", [a], function (c) { c ? e("loadComponent", [a, c], function (a) { b(a) }) : b(null) }) } function e(c, d, g, l) {
                    l || (l = a.g.loaders.slice(0)); var h = l.shift(); if (h) {
                        var n = h[c]; if (n) {
                            var t = !1; if (n.apply(h, d.concat(function (a) { t ? g(null) : null !== a ? g(a) : e(c, d, g, l) })) !== b && (t = !0, !h.suppressLoaderExceptions)) throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.");
                        } else e(c, d, g, l)
                    } else g(null)
                } var g = {}, h = {}; a.g = { get: function (a, c) { var e = h.hasOwnProperty(a) ? h[a] : b; e ? setTimeout(function () { c(e) }, 0) : d(a, c) }, tb: function (a) { delete h[a] }, jb: e }; a.g.loaders = []; a.b("components", a.g); a.b("components.get", a.g.get); a.b("components.clearCachedDefinition", a.g.tb)
            })(); (function () {
                function b(b, c, d, e) {
                    function k() { 0 === --u && e(h) } var h = {}, u = 2, r = d.template; d = d.viewModel; r ? g(c, r, function (c) { a.g.jb("loadTemplate", [b, c], function (a) { h.template = a; k() }) }) : k(); d ? g(c, d, function (c) {
                        a.g.jb("loadViewModel",
                        [b, c], function (a) { h[f] = a; k() })
                    }) : k()
                } function d(a, b, c) { if ("function" === typeof b) c(function (a) { return new b(a) }); else if ("function" === typeof b[f]) c(b[f]); else if ("instance" in b) { var e = b.instance; c(function () { return e }) } else "viewModel" in b ? d(a, b.viewModel, c) : a("Unknown viewModel value: " + b) } function c(b) { switch (a.a.t(b)) { case "script": return a.a.ba(b.text); case "textarea": return a.a.ba(b.value); case "template": if (e(b.content)) return a.a.ia(b.content.childNodes) } return a.a.ia(b.childNodes) } function e(a) {
                    return s.DocumentFragment ?
                    a instanceof DocumentFragment : a && 11 === a.nodeType
                } function g(a, b, c) { "string" === typeof b.require ? N || s.require ? (N || s.require)([b.require], c) : a("Uses require, but no AMD loader is present") : c(b) } function h(a) { return function (b) { throw Error("Component '" + a + "': " + b); } } var k = {}; a.g.tc = function (b, c) { if (!c) throw Error("Invalid configuration for " + b); if (a.g.Qa(b)) throw Error("Component " + b + " is already registered"); k[b] = c }; a.g.Qa = function (a) { return a in k }; a.g.wc = function (b) { delete k[b]; a.g.tb(b) }; a.g.ub = {
                    getConfig: function (a,
                    b) { b(k.hasOwnProperty(a) ? k[a] : null) }, loadComponent: function (a, c, d) { var e = h(a); g(e, c, function (c) { b(a, e, c, d) }) }, loadTemplate: function (b, d, f) {
                        b = h(b); if ("string" === typeof d) f(a.a.ba(d)); else if (d instanceof Array) f(d); else if (e(d)) f(a.a.S(d.childNodes)); else if (d.element) if (d = d.element, s.HTMLElement ? d instanceof HTMLElement : d && d.tagName && 1 === d.nodeType) f(c(d)); else if ("string" === typeof d) { var k = v.getElementById(d); k ? f(c(k)) : b("Cannot find element with ID " + d) } else b("Unknown element type: " + d); else b("Unknown template value: " +
                        d)
                    }, loadViewModel: function (a, b, c) { d(h(a), b, c) }
                }; var f = "createViewModel"; a.b("components.register", a.g.tc); a.b("components.isRegistered", a.g.Qa); a.b("components.unregister", a.g.wc); a.b("components.defaultLoader", a.g.ub); a.g.loaders.push(a.g.ub); a.g.Ub = k
            })(); (function () {
                function b(b, e) {
                    var g = b.getAttribute("params"); if (g) {
                        var g = d.parseBindingsString(g, e, b, { valueAccessors: !0, bindingParams: !0 }), g = a.a.na(g, function (d) { return a.s(d, null, { o: b }) }), h = a.a.na(g, function (d) {
                            return d.Z() ? a.s(function () { return a.a.c(d()) },
                            null, { o: b }) : d.v()
                        }); h.hasOwnProperty("$raw") || (h.$raw = g); return h
                    } return { $raw: {} }
                } a.g.getComponentNameForNode = function (b) { b = a.a.t(b); return a.g.Qa(b) && b }; a.g.mb = function (c, d, g, h) { if (1 === d.nodeType) { var k = a.g.getComponentNameForNode(d); if (k) { c = c || {}; if (c.component) throw Error('Cannot use the "component" binding on a custom element matching a component'); var f = { name: k, params: b(d, g) }; c.component = h ? function () { return f } : f } } return c }; var d = new a.J; 9 > a.a.L && (a.g.register = function (a) {
                    return function (b) {
                        v.createElement(b);
                        return a.apply(this, arguments)
                    }
                }(a.g.register), v.createDocumentFragment = function (b) { return function () { var d = b(), g = a.g.Ub, h; for (h in g) g.hasOwnProperty(h) && d.createElement(h); return d } }(v.createDocumentFragment))
            })(); (function () {
                var b = 0; a.d.component = {
                    init: function (d, c, e, g, h) {
                        function k() { var a = f && f.dispose; "function" === typeof a && a.call(f); m = null } var f, m; a.a.w.da(d, k); a.s(function () {
                            var e = a.a.c(c()), g, n; "string" === typeof e ? g = e : (g = a.a.c(e.name), n = a.a.c(e.params)); if (!g) throw Error("No component name specified");
                            var t = m = ++b; a.g.get(g, function (b) { if (m === t) { k(); if (!b) throw Error("Unknown component '" + g + "'"); var c = b.template; if (!c) throw Error("Component '" + g + "' has no template"); c = a.a.ia(c); a.f.T(d, c); var c = n, e = b.createViewModel; b = e ? e.call(b, c, { element: d }) : c; c = h.createChildContext(b); f = b; a.Ca(c, d) } })
                        }, null, { o: d }); return { controlsDescendantBindings: !0 }
                    }
                }; a.f.Q.component = !0
            })(); var Q = { "class": "className", "for": "htmlFor" }; a.d.attr = {
                update: function (b, d) {
                    var c = a.a.c(d()) || {}; a.a.G(c, function (c, d) {
                        d = a.a.c(d); var h =
                        !1 === d || null === d || d === p; h && b.removeAttribute(c); 8 >= a.a.L && c in Q ? (c = Q[c], h ? b.removeAttribute(c) : b[c] = d) : h || b.setAttribute(c, d.toString()); "name" === c && a.a.Mb(b, h ? "" : d.toString())
                    })
                }
            }; (function () {
                a.d.checked = {
                    after: ["value", "attr"], init: function (b, d, c) {
                        function e() { var e = b.checked, k = q ? h() : e; if (!a.Y.ma() && (!f || e)) { var g = a.k.B(d); m ? l !== k ? (e && (a.a.ea(g, k, !0), a.a.ea(g, l, !1)), l = k) : a.a.ea(g, k, e) : a.h.pa(g, c, "checked", k, !0) } } function g() { var c = a.a.c(d()); b.checked = m ? 0 <= a.a.m(c, h()) : k ? c : h() === c } var h = a.Ib(function () {
                            return c.has("checkedValue") ?
                            a.a.c(c.get("checkedValue")) : c.has("value") ? a.a.c(c.get("value")) : b.value
                        }), k = "checkbox" == b.type, f = "radio" == b.type; if (k || f) { var m = k && a.a.c(d()) instanceof Array, l = m ? h() : p, q = f || m; f && !b.name && a.d.uniqueName.init(b, function () { return !0 }); a.s(e, null, { o: b }); a.a.n(b, "click", e); a.s(g, null, { o: b }) }
                    }
                }; a.h.V.checked = !0; a.d.checkedValue = { update: function (b, d) { b.value = a.a.c(d()) } }
            })(); a.d.css = {
                update: function (b, d) {
                    var c = a.a.c(d()); "object" == typeof c ? a.a.G(c, function (c, d) { d = a.a.c(d); a.a.Ba(b, c, d) }) : (c = String(c || ""),
                    a.a.Ba(b, b.__ko__cssValue, !1), b.__ko__cssValue = c, a.a.Ba(b, c, !0))
                }
            }; a.d.enable = { update: function (b, d) { var c = a.a.c(d()); c && b.disabled ? b.removeAttribute("disabled") : c || b.disabled || (b.disabled = !0) } }; a.d.disable = { update: function (b, d) { a.d.enable.update(b, function () { return !a.a.c(d()) }) } }; a.d.event = {
                init: function (b, d, c, e, g) {
                    var h = d() || {}; a.a.G(h, function (k) {
                        "string" == typeof k && a.a.n(b, k, function (b) {
                            var h, l = d()[k]; if (l) {
                                try { var q = a.a.S(arguments); e = g.$data; q.unshift(e); h = l.apply(e, q) } finally {
                                    !0 !== h && (b.preventDefault ?
                                    b.preventDefault() : b.returnValue = !1)
                                } !1 === c.get(k + "Bubble") && (b.cancelBubble = !0, b.stopPropagation && b.stopPropagation())
                            }
                        })
                    })
                }
            }; a.d.foreach = {
                Eb: function (b) { return function () { var d = b(), c = a.a.Xa(d); if (!c || "number" == typeof c.length) return { foreach: d, templateEngine: a.O.Oa }; a.a.c(d); return { foreach: c.data, as: c.as, includeDestroyed: c.includeDestroyed, afterAdd: c.afterAdd, beforeRemove: c.beforeRemove, afterRender: c.afterRender, beforeMove: c.beforeMove, afterMove: c.afterMove, templateEngine: a.O.Oa } } }, init: function (b,
                d) { return a.d.template.init(b, a.d.foreach.Eb(d)) }, update: function (b, d, c, e, g) { return a.d.template.update(b, a.d.foreach.Eb(d), c, e, g) }
            }; a.h.ha.foreach = !1; a.f.Q.foreach = !0; a.d.hasfocus = {
                init: function (b, d, c) {
                    function e(e) { b.__ko_hasfocusUpdating = !0; var f = b.ownerDocument; if ("activeElement" in f) { var g; try { g = f.activeElement } catch (h) { g = f.body } e = g === b } f = d(); a.h.pa(f, c, "hasfocus", e, !0); b.__ko_hasfocusLastValue = e; b.__ko_hasfocusUpdating = !1 } var g = e.bind(null, !0), h = e.bind(null, !1); a.a.n(b, "focus", g); a.a.n(b, "focusin",
                    g); a.a.n(b, "blur", h); a.a.n(b, "focusout", h)
                }, update: function (b, d) { var c = !!a.a.c(d()); b.__ko_hasfocusUpdating || b.__ko_hasfocusLastValue === c || (c ? b.focus() : b.blur(), a.k.B(a.a.oa, null, [b, c ? "focusin" : "focusout"])) }
            }; a.h.V.hasfocus = !0; a.d.hasFocus = a.d.hasfocus; a.h.V.hasFocus = !0; a.d.html = { init: function () { return { controlsDescendantBindings: !0 } }, update: function (b, d) { a.a.$a(b, d()) } }; I("if"); I("ifnot", !1, !0); I("with", !0, !1, function (a, d) { return a.createChildContext(d) }); var K = {}; a.d.options = {
                init: function (b) {
                    if ("select" !==
                    a.a.t(b)) throw Error("options binding applies only to SELECT elements"); for (; 0 < b.length;) b.remove(0); return { controlsDescendantBindings: !0 }
                }, update: function (b, d, c) {
                    function e() { return a.a.ta(b.options, function (a) { return a.selected }) } function g(a, b, c) { var d = typeof b; return "function" == d ? b(a) : "string" == d ? a[b] : c } function h(c, d) { if (q.length) { var e = 0 <= a.a.m(q, a.i.q(d[0])); a.a.Nb(d[0], e); n && !e && a.k.B(a.a.oa, null, [b, "change"]) } } var k = 0 != b.length && b.multiple ? b.scrollTop : null, f = a.a.c(d()), m = c.get("optionsIncludeDestroyed");
                    d = {}; var l, q; q = b.multiple ? a.a.Da(e(), a.i.q) : 0 <= b.selectedIndex ? [a.i.q(b.options[b.selectedIndex])] : []; f && ("undefined" == typeof f.length && (f = [f]), l = a.a.ta(f, function (b) { return m || b === p || null === b || !a.a.c(b._destroy) }), c.has("optionsCaption") && (f = a.a.c(c.get("optionsCaption")), null !== f && f !== p && l.unshift(K))); var n = !1; d.beforeRemove = function (a) { b.removeChild(a) }; f = h; c.has("optionsAfterRender") && (f = function (b, d) { h(0, d); a.k.B(c.get("optionsAfterRender"), null, [d[0], b !== K ? b : p]) }); a.a.Za(b, l, function (d, e, f) {
                        f.length &&
                        (q = f[0].selected ? [a.i.q(f[0])] : [], n = !0); e = b.ownerDocument.createElement("option"); d === K ? (a.a.bb(e, c.get("optionsCaption")), a.i.ca(e, p)) : (f = g(d, c.get("optionsValue"), d), a.i.ca(e, a.a.c(f)), d = g(d, c.get("optionsText"), f), a.a.bb(e, d)); return [e]
                    }, d, f); a.k.B(function () { c.get("valueAllowUnset") && c.has("value") ? a.i.ca(b, a.a.c(c.get("value")), !0) : (b.multiple ? q.length && e().length < q.length : q.length && 0 <= b.selectedIndex ? a.i.q(b.options[b.selectedIndex]) !== q[0] : q.length || 0 <= b.selectedIndex) && a.a.oa(b, "change") });
                    a.a.dc(b); k && 20 < Math.abs(k - b.scrollTop) && (b.scrollTop = k)
                }
            }; a.d.options.Va = a.a.e.F(); a.d.selectedOptions = {
                after: ["options", "foreach"], init: function (b, d, c) { a.a.n(b, "change", function () { var e = d(), g = []; a.a.u(b.getElementsByTagName("option"), function (b) { b.selected && g.push(a.i.q(b)) }); a.h.pa(e, c, "selectedOptions", g) }) }, update: function (b, d) {
                    if ("select" != a.a.t(b)) throw Error("values binding applies only to SELECT elements"); var c = a.a.c(d()); c && "number" == typeof c.length && a.a.u(b.getElementsByTagName("option"),
                    function (b) { var d = 0 <= a.a.m(c, a.i.q(b)); a.a.Nb(b, d) })
                }
            }; a.h.V.selectedOptions = !0; a.d.style = { update: function (b, d) { var c = a.a.c(d() || {}); a.a.G(c, function (c, d) { d = a.a.c(d); if (null === d || d === p || !1 === d) d = ""; b.style[c] = d }) } }; a.d.submit = { init: function (b, d, c, e, g) { if ("function" != typeof d()) throw Error("The value for a submit binding must be a function"); a.a.n(b, "submit", function (a) { var c, e = d(); try { c = e.call(g.$data, b) } finally { !0 !== c && (a.preventDefault ? a.preventDefault() : a.returnValue = !1) } }) } }; a.d.text = {
                init: function () { return { controlsDescendantBindings: !0 } },
                update: function (b, d) { a.a.bb(b, d()) }
            }; a.f.Q.text = !0; (function () {
                if (s && s.navigator) var b = function (a) { if (a) return parseFloat(a[1]) }, d = s.opera && s.opera.version && parseInt(s.opera.version()), c = s.navigator.userAgent, e = b(c.match(/^(?:(?!chrome).)*version\/([^ ]*) safari/i)), g = b(c.match(/Firefox\/([^ ]*)/)); if (10 > a.a.L) var h = a.a.e.F(), k = a.a.e.F(), f = function (b) { var c = this.activeElement; (c = c && a.a.e.get(c, k)) && c(b) }, m = function (b, c) {
                    var d = b.ownerDocument; a.a.e.get(d, h) || (a.a.e.set(d, h, !0), a.a.n(d, "selectionchange",
                    f)); a.a.e.set(b, k, c)
                }; a.d.textInput = {
                    init: function (b, c, f) {
                        function k(c, d) { a.a.n(b, c, d) } function h() { var d = a.a.c(c()); if (null === d || d === p) d = ""; v !== p && d === v ? setTimeout(h, 4) : b.value !== d && (s = d, b.value = d) } function u() { y || (v = b.value, y = setTimeout(r, 4)) } function r() { clearTimeout(y); v = y = p; var d = b.value; s !== d && (s = d, a.h.pa(c(), f, "textInput", d)) } var s = b.value, y, v; 10 > a.a.L ? (k("propertychange", function (a) { "value" === a.propertyName && r() }), 8 == a.a.L && (k("keyup", r), k("keydown", r)), 8 <= a.a.L && (m(b, r), k("dragend", u))) :
                        (k("input", r), 5 > e && "textarea" === a.a.t(b) ? (k("keydown", u), k("paste", u), k("cut", u)) : 11 > d ? k("keydown", u) : 4 > g && (k("DOMAutoComplete", r), k("dragdrop", r), k("drop", r))); k("change", r); a.s(h, null, { o: b })
                    }
                }; a.h.V.textInput = !0; a.d.textinput = { preprocess: function (a, b, c) { c("textInput", a) } }
            })(); a.d.uniqueName = { init: function (b, d) { if (d()) { var c = "ko_unique_" + ++a.d.uniqueName.Zb; a.a.Mb(b, c) } } }; a.d.uniqueName.Zb = 0; a.d.value = {
                after: ["options", "foreach"], init: function (b, d, c) {
                    if ("input" != b.tagName.toLowerCase() || "checkbox" !=
                    b.type && "radio" != b.type) {
                        var e = ["change"], g = c.get("valueUpdate"), h = !1, k = null; g && ("string" == typeof g && (g = [g]), a.a.ga(e, g), e = a.a.rb(e)); var f = function () { k = null; h = !1; var e = d(), f = a.i.q(b); a.h.pa(e, c, "value", f) }; !a.a.L || "input" != b.tagName.toLowerCase() || "text" != b.type || "off" == b.autocomplete || b.form && "off" == b.form.autocomplete || -1 != a.a.m(e, "propertychange") || (a.a.n(b, "propertychange", function () { h = !0 }), a.a.n(b, "focus", function () { h = !1 }), a.a.n(b, "blur", function () { h && f() })); a.a.u(e, function (c) {
                            var d = f; a.a.vc(c,
                            "after") && (d = function () { k = a.i.q(b); setTimeout(f, 0) }, c = c.substring(5)); a.a.n(b, c, d)
                        }); var m = function () { var e = a.a.c(d()), f = a.i.q(b); if (null !== k && e === k) setTimeout(m, 0); else if (e !== f) if ("select" === a.a.t(b)) { var g = c.get("valueAllowUnset"), f = function () { a.i.ca(b, e, g) }; f(); g || e === a.i.q(b) ? setTimeout(f, 0) : a.k.B(a.a.oa, null, [b, "change"]) } else a.i.ca(b, e) }; a.s(m, null, { o: b })
                    } else a.ra(b, { checkedValue: d })
                }, update: function () { }
            }; a.h.V.value = !0; a.d.visible = {
                update: function (b, d) {
                    var c = a.a.c(d()), e = "none" != b.style.display;
                    c && !e ? b.style.display = "" : !c && e && (b.style.display = "none")
                }
            }; (function (b) { a.d[b] = { init: function (d, c, e, g, h) { return a.d.event.init.call(this, d, function () { var a = {}; a[b] = c(); return a }, e, g, h) } } })("click"); a.H = function () { }; a.H.prototype.renderTemplateSource = function () { throw Error("Override renderTemplateSource"); }; a.H.prototype.createJavaScriptEvaluatorBlock = function () { throw Error("Override createJavaScriptEvaluatorBlock"); }; a.H.prototype.makeTemplateSource = function (b, d) {
                if ("string" == typeof b) {
                    d = d || v; var c =
                    d.getElementById(b); if (!c) throw Error("Cannot find template with ID " + b); return new a.r.l(c)
                } if (1 == b.nodeType || 8 == b.nodeType) return new a.r.fa(b); throw Error("Unknown template type: " + b);
            }; a.H.prototype.renderTemplate = function (a, d, c, e) { a = this.makeTemplateSource(a, e); return this.renderTemplateSource(a, d, c) }; a.H.prototype.isTemplateRewritten = function (a, d) { return !1 === this.allowTemplateRewriting ? !0 : this.makeTemplateSource(a, d).data("isRewritten") }; a.H.prototype.rewriteTemplate = function (a, d, c) {
                a = this.makeTemplateSource(a,
                c); d = d(a.text()); a.text(d); a.data("isRewritten", !0)
            }; a.b("templateEngine", a.H); a.fb = function () {
                function b(b, c, d, k) {
                    b = a.h.Wa(b); for (var f = a.h.ha, m = 0; m < b.length; m++) { var l = b[m].key; if (f.hasOwnProperty(l)) { var q = f[l]; if ("function" === typeof q) { if (l = q(b[m].value)) throw Error(l); } else if (!q) throw Error("This template engine does not support the '" + l + "' binding within its templates"); } } d = "ko.__tr_ambtns(function($context,$element){return(function(){return{ " + a.h.ya(b, { valueAccessors: !0 }) + " } })()},'" + d.toLowerCase() +
                    "')"; return k.createJavaScriptEvaluatorBlock(d) + c
                } var d = /(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi, c = /\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g; return {
                    ec: function (b, c, d) { c.isTemplateRewritten(b, d) || c.rewriteTemplate(b, function (b) { return a.fb.nc(b, c) }, d) }, nc: function (a, g) { return a.replace(d, function (a, c, d, e, l) { return b(l, c, d, g) }).replace(c, function (a, c) { return b(c, "\x3c!-- ko --\x3e", "#comment", g) }) }, Xb: function (b, c) {
                        return a.D.Ua(function (d,
                        k) { var f = d.nextSibling; f && f.nodeName.toLowerCase() === c && a.ra(f, b, k) })
                    }
                }
            }(); a.b("__tr_ambtns", a.fb.Xb); (function () {
                a.r = {}; a.r.l = function (a) { this.l = a }; a.r.l.prototype.text = function () { var b = a.a.t(this.l), b = "script" === b ? "text" : "textarea" === b ? "value" : "innerHTML"; if (0 == arguments.length) return this.l[b]; var d = arguments[0]; "innerHTML" === b ? a.a.$a(this.l, d) : this.l[b] = d }; var b = a.a.e.F() + "_"; a.r.l.prototype.data = function (c) { if (1 === arguments.length) return a.a.e.get(this.l, b + c); a.a.e.set(this.l, b + c, arguments[1]) };
                var d = a.a.e.F(); a.r.fa = function (a) { this.l = a }; a.r.fa.prototype = new a.r.l; a.r.fa.prototype.text = function () { if (0 == arguments.length) { var b = a.a.e.get(this.l, d) || {}; b.gb === p && b.Ga && (b.gb = b.Ga.innerHTML); return b.gb } a.a.e.set(this.l, d, { gb: arguments[0] }) }; a.r.l.prototype.nodes = function () { if (0 == arguments.length) return (a.a.e.get(this.l, d) || {}).Ga; a.a.e.set(this.l, d, { Ga: arguments[0] }) }; a.b("templateSources", a.r); a.b("templateSources.domElement", a.r.l); a.b("templateSources.anonymousTemplate", a.r.fa)
            })(); (function () {
                function b(b,
                c, d) { var e; for (c = a.f.nextSibling(c) ; b && (e = b) !== c;) b = a.f.nextSibling(e), d(e, b) } function d(c, d) {
                    if (c.length) {
                        var e = c[0], g = c[c.length - 1], h = e.parentNode, n = a.J.instance, t = n.preprocessNode; if (t) { b(e, g, function (a, b) { var c = a.previousSibling, d = t.call(n, a); d && (a === e && (e = d[0] || b), a === g && (g = d[d.length - 1] || c)) }); c.length = 0; if (!e) return; e === g ? c.push(e) : (c.push(e, g), a.a.ka(c, h)) } b(e, g, function (b) { 1 !== b.nodeType && 8 !== b.nodeType || a.pb(d, b) }); b(e, g, function (b) { 1 !== b.nodeType && 8 !== b.nodeType || a.D.Sb(b, [d]) }); a.a.ka(c,
                        h)
                    }
                } function c(a) { return a.nodeType ? a : 0 < a.length ? a[0] : null } function e(b, e, h, l, q) {
                    q = q || {}; var n = b && c(b), n = n && n.ownerDocument, t = q.templateEngine || g; a.fb.ec(h, t, n); h = t.renderTemplate(h, l, q, n); if ("number" != typeof h.length || 0 < h.length && "number" != typeof h[0].nodeType) throw Error("Template engine must return an array of DOM nodes"); n = !1; switch (e) {
                        case "replaceChildren": a.f.T(b, h); n = !0; break; case "replaceNode": a.a.Lb(b, h); n = !0; break; case "ignoreTargetNode": break; default: throw Error("Unknown renderMode: " +
                        e);
                    } n && (d(h, l), q.afterRender && a.k.B(q.afterRender, null, [h, l.$data])); return h
                } var g; a.ab = function (b) { if (b != p && !(b instanceof a.H)) throw Error("templateEngine must inherit from ko.templateEngine"); g = b }; a.Ya = function (b, d, h, l, q) {
                    h = h || {}; if ((h.templateEngine || g) == p) throw Error("Set a template engine before calling renderTemplate"); q = q || "replaceChildren"; if (l) {
                        var n = c(l); return a.j(function () {
                            var g = d && d instanceof a.N ? d : new a.N(a.a.c(d)), p = a.C(b) ? b() : "function" === typeof b ? b(g.$data, g) : b, g = e(l, q, p, g, h);
                            "replaceNode" == q && (l = g, n = c(l))
                        }, null, { Ia: function () { return !n || !a.a.Ja(n) }, o: n && "replaceNode" == q ? n.parentNode : n })
                    } return a.D.Ua(function (c) { a.Ya(b, d, h, c, "replaceNode") })
                }; a.uc = function (b, c, g, h, q) {
                    function n(a, b) { d(b, s); g.afterRender && g.afterRender(b, a) } function t(c, d) { s = q.createChildContext(c, g.as, function (a) { a.$index = d }); var f = a.C(b) ? b() : "function" === typeof b ? b(c, s) : b; return e(null, "ignoreTargetNode", f, s, g) } var s; return a.j(function () {
                        var b = a.a.c(c) || []; "undefined" == typeof b.length && (b = [b]); b = a.a.ta(b,
                        function (b) { return g.includeDestroyed || b === p || null === b || !a.a.c(b._destroy) }); a.k.B(a.a.Za, null, [h, b, t, g, n])
                    }, null, { o: h })
                }; var h = a.a.e.F(); a.d.template = {
                    init: function (b, c) { var d = a.a.c(c()); "string" == typeof d || d.name ? a.f.ja(b) : (d = a.f.childNodes(b), d = a.a.oc(d), (new a.r.fa(b)).nodes(d)); return { controlsDescendantBindings: !0 } }, update: function (b, c, d, e, g) {
                        var n = c(), t; c = a.a.c(n); d = !0; e = null; "string" == typeof c ? c = {} : (n = c.name, "if" in c && (d = a.a.c(c["if"])), d && "ifnot" in c && (d = !a.a.c(c.ifnot)), t = a.a.c(c.data));
                        "foreach" in c ? e = a.uc(n || b, d && c.foreach || [], c, b, g) : d ? (g = "data" in c ? g.createChildContext(t, c.as) : g, e = a.Ya(n || b, g, c, b)) : a.f.ja(b); g = e; (t = a.a.e.get(b, h)) && "function" == typeof t.K && t.K(); a.a.e.set(b, h, g && g.Z() ? g : p)
                    }
                }; a.h.ha.template = function (b) { b = a.h.Wa(b); return 1 == b.length && b[0].unknown || a.h.lc(b, "name") ? null : "This template engine does not support anonymous templates nested within its templates" }; a.f.Q.template = !0
            })(); a.b("setTemplateEngine", a.ab); a.b("renderTemplate", a.Ya); a.a.wb = function (a, d, c) {
                if (a.length &&
                d.length) { var e, g, h, k, f; for (e = g = 0; (!c || e < c) && (k = a[g]) ; ++g) { for (h = 0; f = d[h]; ++h) if (k.value === f.value) { k.moved = f.index; f.moved = k.index; d.splice(h, 1); e = h = 0; break } e += h } }
            }; a.a.Fa = function () {
                function b(b, c, e, g, h) {
                    var k = Math.min, f = Math.max, m = [], l, q = b.length, n, p = c.length, s = p - q || 1, u = q + p + 1, r, v, w; for (l = 0; l <= q; l++) for (v = r, m.push(r = []), w = k(p, l + s), n = f(0, l - 1) ; n <= w; n++) r[n] = n ? l ? b[l - 1] === c[n - 1] ? v[n - 1] : k(v[n] || u, r[n - 1] || u) + 1 : n + 1 : l + 1; k = []; f = []; s = []; l = q; for (n = p; l || n;) p = m[l][n] - 1, n && p === m[l][n - 1] ? f.push(k[k.length] = {
                        status: e,
                        value: c[--n], index: n
                    }) : l && p === m[l - 1][n] ? s.push(k[k.length] = { status: g, value: b[--l], index: l }) : (--n, --l, h.sparse || k.push({ status: "retained", value: c[n] })); a.a.wb(f, s, 10 * q); return k.reverse()
                } return function (a, c, e) { e = "boolean" === typeof e ? { dontLimitMoves: e } : e || {}; a = a || []; c = c || []; return a.length <= c.length ? b(a, c, "added", "deleted", e) : b(c, a, "deleted", "added", e) }
            }(); a.b("utils.compareArrays", a.a.Fa); (function () {
                function b(b, d, g, h, k) {
                    var f = [], m = a.j(function () {
                        var l = d(g, k, a.a.ka(f, b)) || []; 0 < f.length && (a.a.Lb(f,
                        l), h && a.k.B(h, null, [g, l, k])); f.length = 0; a.a.ga(f, l)
                    }, null, { o: b, Ia: function () { return !a.a.ob(f) } }); return { $: f, j: m.Z() ? m : p }
                } var d = a.a.e.F(); a.a.Za = function (c, e, g, h, k) {
                    function f(b, d) { x = q[d]; r !== d && (A[b] = x); x.Na(r++); a.a.ka(x.$, c); s.push(x); w.push(x) } function m(b, c) { if (b) for (var d = 0, e = c.length; d < e; d++) c[d] && a.a.u(c[d].$, function (a) { b(a, d, c[d].sa) }) } e = e || []; h = h || {}; var l = a.a.e.get(c, d) === p, q = a.a.e.get(c, d) || [], n = a.a.Da(q, function (a) { return a.sa }), t = a.a.Fa(n, e, h.dontLimitMoves), s = [], u = 0, r = 0, v = [], w = []; e =
                    []; for (var A = [], n = [], x, B = 0, D, F; D = t[B]; B++) switch (F = D.moved, D.status) { case "deleted": F === p && (x = q[u], x.j && x.j.K(), v.push.apply(v, a.a.ka(x.$, c)), h.beforeRemove && (e[B] = x, w.push(x))); u++; break; case "retained": f(B, u++); break; case "added": F !== p ? f(B, F) : (x = { sa: D.value, Na: a.p(r++) }, s.push(x), w.push(x), l || (n[B] = x)) } m(h.beforeMove, A); a.a.u(v, h.beforeRemove ? a.R : a.removeNode); for (var B = 0, l = a.f.firstChild(c), G; x = w[B]; B++) {
                        x.$ || a.a.extend(x, b(c, g, x.sa, k, x.Na)); for (u = 0; t = x.$[u]; l = t.nextSibling, G = t, u++) t !== l && a.f.Bb(c,
                        t, G); !x.ic && k && (k(x.sa, x.$, x.Na), x.ic = !0)
                    } m(h.beforeRemove, e); m(h.afterMove, A); m(h.afterAdd, n); a.a.e.set(c, d, s)
                }
            })(); a.b("utils.setDomNodeChildrenFromArrayMapping", a.a.Za); a.O = function () { this.allowTemplateRewriting = !1 }; a.O.prototype = new a.H; a.O.prototype.renderTemplateSource = function (b) { var d = (9 > a.a.L ? 0 : b.nodes) ? b.nodes() : null; if (d) return a.a.S(d.cloneNode(!0).childNodes); b = b.text(); return a.a.ba(b) }; a.O.Oa = new a.O; a.ab(a.O.Oa); a.b("nativeTemplateEngine", a.O); (function () {
                a.Sa = function () {
                    var a = this.kc =
                    function () { if (!w || !w.tmpl) return 0; try { if (0 <= w.tmpl.tag.tmpl.open.toString().indexOf("__")) return 2 } catch (a) { } return 1 }(); this.renderTemplateSource = function (b, e, g) {
                        g = g || {}; if (2 > a) throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later."); var h = b.data("precompiled"); h || (h = b.text() || "", h = w.template(null, "{{ko_with $item.koBindingContext}}" + h + "{{/ko_with}}"), b.data("precompiled", h)); b = [e.$data]; e = w.extend({ koBindingContext: e }, g.templateOptions); e = w.tmpl(h,
                        b, e); e.appendTo(v.createElement("div")); w.fragments = {}; return e
                    }; this.createJavaScriptEvaluatorBlock = function (a) { return "{{ko_code ((function() { return " + a + " })()) }}" }; this.addTemplate = function (a, b) { v.write("<script type='text/html' id='" + a + "'>" + b + "\x3c/script>") }; 0 < a && (w.tmpl.tag.ko_code = { open: "__.push($1 || '');" }, w.tmpl.tag.ko_with = { open: "with($1) {", close: "} " })
                }; a.Sa.prototype = new a.H; var b = new a.Sa; 0 < b.kc && a.ab(b); a.b("jqueryTmplTemplateEngine", a.Sa)
            })()
        })
    })();
})();